home *** CD-ROM | disk | FTP | other *** search
/ Inter.Net 55-1 / Inter.Net 55-1.iso / CBuilder / Setup / BCB / data.z / richedit.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1998-02-09  |  39.7 KB  |  1,171 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Delphi Runtime Library                          }
  5. {       Windows 32bit API Interface Unit                }
  6. {                                                       }
  7. {       Copyright (c) 1996,98 Borland International     }
  8. {                                                       }
  9. {*******************************************************}
  10.  
  11. {$HPPEMIT '#include <RichEdit.h>'}
  12.  
  13. unit RichEdit;
  14.  
  15. {$WEAKPACKAGEUNIT}
  16.  
  17. interface
  18.  
  19. uses Messages, Windows;
  20.  
  21. const
  22.   {$EXTERNALSYM cchTextLimitDefault}
  23.   cchTextLimitDefault     = 32767; 
  24.  
  25.  
  26.   {$EXTERNALSYM RICHEDIT_CLASSA}
  27.   RICHEDIT_CLASSA       = 'RichEdit20A';     { Richedit2.0 Window Class. }
  28.   {$EXTERNALSYM RICHEDIT_CLASSW}
  29.   RICHEDIT_CLASSW       = 'RichEdit20W';     { Richedit2.0 Window Class. }
  30.   {$EXTERNALSYM RICHEDIT_CLASS}
  31.   RICHEDIT_CLASS = RICHEDIT_CLASSA;
  32.   RICHEDIT_CLASS10A       = 'RICHEDIT';        { Richedit 1.0 }
  33.  
  34. { RichEdit messages }
  35.  
  36.   {$EXTERNALSYM WM_CONTEXTMENU}
  37.   WM_CONTEXTMENU                      = $007B; 
  38.   {$EXTERNALSYM WM_PRINTCLIENT}
  39.   WM_PRINTCLIENT                      = $0318; 
  40.  
  41.   {$EXTERNALSYM EM_GETLIMITTEXT}
  42.   EM_GETLIMITTEXT                     = WM_USER + 37; 
  43. //  EM_POSFROMCHAR                      = WM_USER + 38;
  44. //  EM_CHARFROMPOS                      = WM_USER + 39; 
  45.   {$EXTERNALSYM EM_SCROLLCARET}
  46.   EM_SCROLLCARET                      = WM_USER + 49; 
  47.   {$EXTERNALSYM EM_CANPASTE}
  48.   EM_CANPASTE                         = WM_USER + 50; 
  49.   {$EXTERNALSYM EM_DISPLAYBAND}
  50.   EM_DISPLAYBAND                      = WM_USER + 51; 
  51.   {$EXTERNALSYM EM_EXGETSEL}
  52.   EM_EXGETSEL                         = WM_USER + 52; 
  53.   {$EXTERNALSYM EM_EXLIMITTEXT}
  54.   EM_EXLIMITTEXT                      = WM_USER + 53; 
  55.   {$EXTERNALSYM EM_EXLINEFROMCHAR}
  56.   EM_EXLINEFROMCHAR                   = WM_USER + 54; 
  57.   {$EXTERNALSYM EM_EXSETSEL}
  58.   EM_EXSETSEL                         = WM_USER + 55; 
  59.   {$EXTERNALSYM EM_FINDTEXT}
  60.   EM_FINDTEXT                         = WM_USER + 56; 
  61.   {$EXTERNALSYM EM_FORMATRANGE}
  62.   EM_FORMATRANGE                      = WM_USER + 57; 
  63.   {$EXTERNALSYM EM_GETCHARFORMAT}
  64.   EM_GETCHARFORMAT                    = WM_USER + 58; 
  65.   {$EXTERNALSYM EM_GETEVENTMASK}
  66.   EM_GETEVENTMASK                     = WM_USER + 59; 
  67.   {$EXTERNALSYM EM_GETOLEINTERFACE}
  68.   EM_GETOLEINTERFACE                  = WM_USER + 60; 
  69.   {$EXTERNALSYM EM_GETPARAFORMAT}
  70.   EM_GETPARAFORMAT                    = WM_USER + 61; 
  71.   {$EXTERNALSYM EM_GETSELTEXT}
  72.   EM_GETSELTEXT                       = WM_USER + 62; 
  73.   {$EXTERNALSYM EM_HIDESELECTION}
  74.   EM_HIDESELECTION                    = WM_USER + 63; 
  75.   {$EXTERNALSYM EM_PASTESPECIAL}
  76.   EM_PASTESPECIAL                     = WM_USER + 64; 
  77.   {$EXTERNALSYM EM_REQUESTRESIZE}
  78.   EM_REQUESTRESIZE                    = WM_USER + 65; 
  79.   {$EXTERNALSYM EM_SELECTIONTYPE}
  80.   EM_SELECTIONTYPE                    = WM_USER + 66; 
  81.   {$EXTERNALSYM EM_SETBKGNDCOLOR}
  82.   EM_SETBKGNDCOLOR                    = WM_USER + 67; 
  83.   {$EXTERNALSYM EM_SETCHARFORMAT}
  84.   EM_SETCHARFORMAT                    = WM_USER + 68; 
  85.   {$EXTERNALSYM EM_SETEVENTMASK}
  86.   EM_SETEVENTMASK                     = WM_USER + 69; 
  87.   {$EXTERNALSYM EM_SETOLECALLBACK}
  88.   EM_SETOLECALLBACK                   = WM_USER + 70; 
  89.   {$EXTERNALSYM EM_SETPARAFORMAT}
  90.   EM_SETPARAFORMAT                    = WM_USER + 71; 
  91.   {$EXTERNALSYM EM_SETTARGETDEVICE}
  92.   EM_SETTARGETDEVICE                  = WM_USER + 72; 
  93.   {$EXTERNALSYM EM_STREAMIN}
  94.   EM_STREAMIN                         = WM_USER + 73; 
  95.   {$EXTERNALSYM EM_STREAMOUT}
  96.   EM_STREAMOUT                        = WM_USER + 74; 
  97.   {$EXTERNALSYM EM_GETTEXTRANGE}
  98.   EM_GETTEXTRANGE                     = WM_USER + 75; 
  99.   {$EXTERNALSYM EM_FINDWORDBREAK}
  100.   EM_FINDWORDBREAK                    = WM_USER + 76; 
  101.   {$EXTERNALSYM EM_SETOPTIONS}
  102.   EM_SETOPTIONS                       = WM_USER + 77; 
  103.   {$EXTERNALSYM EM_GETOPTIONS}
  104.   EM_GETOPTIONS                       = WM_USER + 78; 
  105.   {$EXTERNALSYM EM_FINDTEXTEX}
  106.   EM_FINDTEXTEX                       = WM_USER + 79; 
  107.   {$EXTERNALSYM EM_GETWORDBREAKPROCEX}
  108.   EM_GETWORDBREAKPROCEX               = WM_USER + 80; 
  109.   {$EXTERNALSYM EM_SETWORDBREAKPROCEX}
  110.   EM_SETWORDBREAKPROCEX               = WM_USER + 81; 
  111.  
  112. { Richedit v2.0 messages }
  113.  
  114.   {$EXTERNALSYM EM_SETUNDOLIMIT}
  115.   EM_SETUNDOLIMIT                     = WM_USER + 82; 
  116.   {$EXTERNALSYM EM_REDO}
  117.   EM_REDO                             = WM_USER + 84; 
  118.   {$EXTERNALSYM EM_CANREDO}
  119.   EM_CANREDO                          = WM_USER + 85; 
  120.   {$EXTERNALSYM EM_GETUNDONAME}
  121.   EM_GETUNDONAME                      = WM_USER + 86; 
  122.   {$EXTERNALSYM EM_GETREDONAME}
  123.   EM_GETREDONAME                      = WM_USER + 87; 
  124.   {$EXTERNALSYM EM_STOPGROUPTYPING}
  125.   EM_STOPGROUPTYPING                  = WM_USER + 88; 
  126.   {$EXTERNALSYM EM_SETTEXTMODE}
  127.   EM_SETTEXTMODE                      = WM_USER + 89; 
  128.   {$EXTERNALSYM EM_GETTEXTMODE}
  129.   EM_GETTEXTMODE                      = WM_USER + 90; 
  130.  
  131. { for use with EM_GET/SETTEXTMODE }
  132.  
  133.   TM_PLAINTEXT                       = 1; 
  134.   TM_RICHTEXT                        = 2;     { default behavior }
  135.   TM_SINGLELEVELUNDO                 = 4; 
  136.   TM_MULTILEVELUNDO                  = 8;     { default behavior }
  137.   TM_SINGLECODEPAGE                  = 16; 
  138.   TM_MULTICODEPAGE                   = 32;    { default behavior }
  139.  
  140.   {$EXTERNALSYM EM_AUTOURLDETECT}
  141.   EM_AUTOURLDETECT                    = WM_USER + 91; 
  142.   {$EXTERNALSYM EM_GETAUTOURLDETECT}
  143.   EM_GETAUTOURLDETECT                 = WM_USER + 92; 
  144.   {$EXTERNALSYM EM_SETPALETTE}
  145.   EM_SETPALETTE                       = WM_USER + 93; 
  146.   {$EXTERNALSYM EM_GETTEXTEX}
  147.   EM_GETTEXTEX                        = WM_USER + 94; 
  148.   {$EXTERNALSYM EM_GETTEXTLENGTHEX}
  149.   EM_GETTEXTLENGTHEX                  = WM_USER + 95; 
  150.  
  151. { Far East specific messages }
  152.  
  153.   {$EXTERNALSYM EM_SETPUNCTUATION}
  154.   EM_SETPUNCTUATION                   = WM_USER + 100; 
  155.   {$EXTERNALSYM EM_GETPUNCTUATION}
  156.   EM_GETPUNCTUATION                   = WM_USER + 101; 
  157.   {$EXTERNALSYM EM_SETWORDWRAPMODE}
  158.   EM_SETWORDWRAPMODE                  = WM_USER + 102; 
  159.   {$EXTERNALSYM EM_GETWORDWRAPMODE}
  160.   EM_GETWORDWRAPMODE                  = WM_USER + 103; 
  161.   {$EXTERNALSYM EM_SETIMECOLOR}
  162.   EM_SETIMECOLOR                      = WM_USER + 104; 
  163.   {$EXTERNALSYM EM_GETIMECOLOR}
  164.   EM_GETIMECOLOR                      = WM_USER + 105; 
  165.   {$EXTERNALSYM EM_SETIMEOPTIONS}
  166.   EM_SETIMEOPTIONS                    = WM_USER + 106; 
  167.   {$EXTERNALSYM EM_GETIMEOPTIONS}
  168.   EM_GETIMEOPTIONS                    = WM_USER + 107; 
  169.   {$EXTERNALSYM EM_CONVPOSITION}
  170.   EM_CONVPOSITION                     = WM_USER + 108; 
  171.  
  172.   {$EXTERNALSYM EM_SETLANGOPTIONS}
  173.   EM_SETLANGOPTIONS                   = WM_USER + 120; 
  174.   {$EXTERNALSYM EM_GETLANGOPTIONS}
  175.   EM_GETLANGOPTIONS                   = WM_USER + 121; 
  176.   {$EXTERNALSYM EM_GETIMECOMPMODE}
  177.   EM_GETIMECOMPMODE                   = WM_USER + 122; 
  178.  
  179. { Options for EM_SETLANGOPTIONS and EM_GETLANGOPTIONS }
  180.  
  181.   {$EXTERNALSYM IMF_AUTOKEYBOARD}
  182.   IMF_AUTOKEYBOARD            = $0001; 
  183.   {$EXTERNALSYM IMF_AUTOFONT}
  184.   IMF_AUTOFONT                = $0002; 
  185.   {$EXTERNALSYM IMF_IMECANCELCOMPLETE}
  186.   IMF_IMECANCELCOMPLETE       = $0004;  { high completes the comp string when aborting, low cancels. }
  187.   {$EXTERNALSYM IMF_IMEALWAYSSENDNOTIFY}
  188.   IMF_IMEALWAYSSENDNOTIFY     = $0008; 
  189.  
  190. { Values for EM_GETIMECOMPMODE }
  191.  
  192.   {$EXTERNALSYM ICM_NOTOPEN}
  193.   ICM_NOTOPEN                         = $0000; 
  194.   {$EXTERNALSYM ICM_LEVEL3}
  195.   ICM_LEVEL3                          = $0001; 
  196.   {$EXTERNALSYM ICM_LEVEL2}
  197.   ICM_LEVEL2                          = $0002; 
  198.   {$EXTERNALSYM ICM_LEVEL2_5}
  199.   ICM_LEVEL2_5                        = $0003; 
  200.   {$EXTERNALSYM ICM_LEVEL2_SUI}
  201.   ICM_LEVEL2_SUI                      = $0004; 
  202.  
  203. { New notifications }
  204.  
  205.   {$EXTERNALSYM EN_MSGFILTER}
  206.   EN_MSGFILTER                        = $0700; 
  207.   {$EXTERNALSYM EN_REQUESTRESIZE}
  208.   EN_REQUESTRESIZE                    = $0701; 
  209.   {$EXTERNALSYM EN_SELCHANGE}
  210.   EN_SELCHANGE                        = $0702; 
  211.   {$EXTERNALSYM EN_DROPFILES}
  212.   EN_DROPFILES                        = $0703; 
  213.   {$EXTERNALSYM EN_PROTECTED}
  214.   EN_PROTECTED                        = $0704; 
  215.   {$EXTERNALSYM EN_CORRECTTEXT}
  216.   EN_CORRECTTEXT                      = $0705;                  { PenWin specific }
  217.   {$EXTERNALSYM EN_STOPNOUNDO}
  218.   EN_STOPNOUNDO                       = $0706; 
  219.   {$EXTERNALSYM EN_IMECHANGE}
  220.   EN_IMECHANGE                        = $0707;                  { Far East specific }
  221.   {$EXTERNALSYM EN_SAVECLIPBOARD}
  222.   EN_SAVECLIPBOARD                    = $0708; 
  223.   {$EXTERNALSYM EN_OLEOPFAILED}
  224.   EN_OLEOPFAILED                      = $0709; 
  225.   {$EXTERNALSYM EN_OBJECTPOSITIONS}
  226.   EN_OBJECTPOSITIONS                  = $070a; 
  227.   {$EXTERNALSYM EN_LINK}
  228.   EN_LINK                             = $070b; 
  229.   {$EXTERNALSYM EN_DRAGDROPDONE}
  230.   EN_DRAGDROPDONE                     = $070c; 
  231.  
  232. { Event notification masks }
  233.  
  234.   {$EXTERNALSYM ENM_NONE}
  235.   ENM_NONE                            = $00000000; 
  236.   {$EXTERNALSYM ENM_CHANGE}
  237.   ENM_CHANGE                          = $00000001; 
  238.   {$EXTERNALSYM ENM_UPDATE}
  239.   ENM_UPDATE                          = $00000002; 
  240.   {$EXTERNALSYM ENM_SCROLL}
  241.   ENM_SCROLL                          = $00000004; 
  242.   {$EXTERNALSYM ENM_KEYEVENTS}
  243.   ENM_KEYEVENTS                       = $00010000; 
  244.   {$EXTERNALSYM ENM_MOUSEEVENTS}
  245.   ENM_MOUSEEVENTS                     = $00020000; 
  246.   {$EXTERNALSYM ENM_REQUESTRESIZE}
  247.   ENM_REQUESTRESIZE                   = $00040000; 
  248.   {$EXTERNALSYM ENM_SELCHANGE}
  249.   ENM_SELCHANGE                       = $00080000; 
  250.   {$EXTERNALSYM ENM_DROPFILES}
  251.   ENM_DROPFILES                       = $00100000; 
  252.   {$EXTERNALSYM ENM_PROTECTED}
  253.   ENM_PROTECTED                       = $00200000; 
  254.   {$EXTERNALSYM ENM_CORRECTTEXT}
  255.   ENM_CORRECTTEXT                     = $00400000;              { PenWin specific }
  256.   {$EXTERNALSYM ENM_SCROLLEVENTS}
  257.   ENM_SCROLLEVENTS                    = $00000008; 
  258.   {$EXTERNALSYM ENM_DRAGDROPDONE}
  259.   ENM_DRAGDROPDONE                    = $00000010; 
  260.  
  261. { Far East specific notification mask }
  262.  
  263.   {$EXTERNALSYM ENM_IMECHANGE}
  264.   ENM_IMECHANGE                       = $00800000;              { unused by RE2.0 }
  265.   {$EXTERNALSYM ENM_LANGCHANGE}
  266.   ENM_LANGCHANGE                      = $01000000; 
  267.   {$EXTERNALSYM ENM_OBJECTPOSITIONS}
  268.   ENM_OBJECTPOSITIONS                 = $02000000; 
  269.   {$EXTERNALSYM ENM_LINK}
  270.   ENM_LINK                            = $04000000; 
  271.  
  272. { New edit control styles }
  273.  
  274.   {$EXTERNALSYM ES_SAVESEL}
  275.   ES_SAVESEL                          = $00008000; 
  276.   {$EXTERNALSYM ES_SUNKEN}
  277.   ES_SUNKEN                           = $00004000; 
  278.   {$EXTERNALSYM ES_DISABLENOSCROLL}
  279.   ES_DISABLENOSCROLL                  = $00002000;
  280. { same as WS_MAXIMIZE, but that doesn't make sense so we re-use the value }
  281.   {$EXTERNALSYM ES_SELECTIONBAR}
  282.   ES_SELECTIONBAR                     = $01000000; 
  283. { same as ES_UPPERCASE, but re-used to completely disable OLE drag'n'drop }
  284.   {$EXTERNALSYM ES_NOOLEDRAGDROP}
  285.   ES_NOOLEDRAGDROP                    = $00000008; 
  286.  
  287. { New edit control extended style }
  288.  
  289.   {$EXTERNALSYM ES_EX_NOCALLOLEINIT}
  290.   ES_EX_NOCALLOLEINIT                 = $01000000; 
  291.  
  292. { These flags are used in FE Windows }
  293.  
  294.   {$EXTERNALSYM ES_VERTICAL}
  295.   ES_VERTICAL                         = $00400000; 
  296.   {$EXTERNALSYM ES_NOIME}
  297.   ES_NOIME                            = $00080000; 
  298.   {$EXTERNALSYM ES_SELFIME}
  299.   ES_SELFIME                          = $00040000; 
  300.  
  301. { Edit control options }
  302.  
  303.   {$EXTERNALSYM ECO_AUTOWORDSELECTION}
  304.   ECO_AUTOWORDSELECTION       = $00000001; 
  305.   {$EXTERNALSYM ECO_AUTOVSCROLL}
  306.   ECO_AUTOVSCROLL             = $00000040; 
  307.   {$EXTERNALSYM ECO_AUTOHSCROLL}
  308.   ECO_AUTOHSCROLL             = $00000080; 
  309.   {$EXTERNALSYM ECO_NOHIDESEL}
  310.   ECO_NOHIDESEL               = $00000100; 
  311.   {$EXTERNALSYM ECO_READONLY}
  312.   ECO_READONLY                = $00000800; 
  313.   {$EXTERNALSYM ECO_WANTRETURN}
  314.   ECO_WANTRETURN              = $00001000; 
  315.   {$EXTERNALSYM ECO_SAVESEL}
  316.   ECO_SAVESEL                 = $00008000; 
  317.   {$EXTERNALSYM ECO_SELECTIONBAR}
  318.   ECO_SELECTIONBAR            = $01000000; 
  319.   {$EXTERNALSYM ECO_VERTICAL}
  320.   ECO_VERTICAL                = $00400000;              { FE specific }
  321.  
  322. { ECO operations }
  323.  
  324.   {$EXTERNALSYM ECOOP_SET}
  325.   ECOOP_SET                                   = $0001; 
  326.   {$EXTERNALSYM ECOOP_OR}
  327.   ECOOP_OR                                    = $0002; 
  328.   {$EXTERNALSYM ECOOP_AND}
  329.   ECOOP_AND                                   = $0003; 
  330.   {$EXTERNALSYM ECOOP_XOR}
  331.   ECOOP_XOR                                   = $0004; 
  332.  
  333. { new word break function actions }
  334.  
  335.   {$EXTERNALSYM WB_CLASSIFY}
  336.   WB_CLASSIFY                 = 3; 
  337.   {$EXTERNALSYM WB_MOVEWORDLEFT}
  338.   WB_MOVEWORDLEFT             = 4; 
  339.   {$EXTERNALSYM WB_MOVEWORDRIGHT}
  340.   WB_MOVEWORDRIGHT            = 5; 
  341.   {$EXTERNALSYM WB_LEFTBREAK}
  342.   WB_LEFTBREAK                = 6; 
  343.   {$EXTERNALSYM WB_RIGHTBREAK}
  344.   WB_RIGHTBREAK               = 7; 
  345.  
  346. { Far East specific flags }
  347.  
  348.   {$EXTERNALSYM WB_MOVEWORDPREV}
  349.   WB_MOVEWORDPREV             = 4; 
  350.   {$EXTERNALSYM WB_MOVEWORDNEXT}
  351.   WB_MOVEWORDNEXT             = 5; 
  352.   {$EXTERNALSYM WB_PREVBREAK}
  353.   WB_PREVBREAK                = 6; 
  354.   {$EXTERNALSYM WB_NEXTBREAK}
  355.   WB_NEXTBREAK                = 7; 
  356.  
  357.   {$EXTERNALSYM PC_FOLLOWING}
  358.   PC_FOLLOWING                = 1; 
  359.   {$EXTERNALSYM PC_LEADING}
  360.   PC_LEADING                  = 2; 
  361.   {$EXTERNALSYM PC_OVERFLOW}
  362.   PC_OVERFLOW                 = 3; 
  363.   {$EXTERNALSYM PC_DELIMITER}
  364.   PC_DELIMITER                = 4; 
  365.   {$EXTERNALSYM WBF_WORDWRAP}
  366.   WBF_WORDWRAP                = $010; 
  367.   {$EXTERNALSYM WBF_WORDBREAK}
  368.   WBF_WORDBREAK               = $020; 
  369.   {$EXTERNALSYM WBF_OVERFLOW}
  370.   WBF_OVERFLOW                = $040; 
  371.   {$EXTERNALSYM WBF_LEVEL1}
  372.   WBF_LEVEL1                  = $080; 
  373.   {$EXTERNALSYM WBF_LEVEL2}
  374.   WBF_LEVEL2                  = $100; 
  375.   {$EXTERNALSYM WBF_CUSTOM}
  376.   WBF_CUSTOM                  = $200; 
  377.  
  378. { Far East specific flags }
  379.  
  380.   {$EXTERNALSYM IMF_FORCENONE}
  381.   IMF_FORCENONE               = $0001; 
  382.   {$EXTERNALSYM IMF_FORCEENABLE}
  383.   IMF_FORCEENABLE             = $0002; 
  384.   {$EXTERNALSYM IMF_FORCEDISABLE}
  385.   IMF_FORCEDISABLE            = $0004; 
  386.   {$EXTERNALSYM IMF_CLOSESTATUSWINDOW}
  387.   IMF_CLOSESTATUSWINDOW       = $0008; 
  388.   {$EXTERNALSYM IMF_VERTICAL}
  389.   IMF_VERTICAL                = $0020; 
  390.   {$EXTERNALSYM IMF_FORCEACTIVE}
  391.   IMF_FORCEACTIVE             = $0040; 
  392.   {$EXTERNALSYM IMF_FORCEINACTIVE}
  393.   IMF_FORCEINACTIVE           = $0080; 
  394.   {$EXTERNALSYM IMF_FORCEREMEMBER}
  395.   IMF_FORCEREMEMBER           = $0100; 
  396.   {$EXTERNALSYM IMF_MULTIPLEEDIT}
  397.   IMF_MULTIPLEEDIT            = $0400; 
  398.  
  399. { Word break flags (used with WB_CLASSIFY) }
  400.  
  401.   {$EXTERNALSYM WBF_CLASS}
  402.   WBF_CLASS                   = $0F; 
  403.   {$EXTERNALSYM WBF_ISWHITE}
  404.   WBF_ISWHITE                 = $10; 
  405.   {$EXTERNALSYM WBF_BREAKLINE}
  406.   WBF_BREAKLINE               = $20; 
  407.   {$EXTERNALSYM WBF_BREAKAFTER}
  408.   WBF_BREAKAFTER              = $40; 
  409.  
  410. { all character format measurements are in twips }
  411.  
  412. type
  413.   TCharFormatA = record
  414.     cbSize: UINT;
  415.     dwMask: Longint;
  416.     dwEffects: Longint;
  417.     yHeight: Longint;
  418.     yOffset: Longint;
  419.     crTextColor: TColorRef;
  420.     bCharSet: Byte;
  421.     bPitchAndFamily: Byte;
  422.     szFaceName: array[0..LF_FACESIZE - 1] of AnsiChar;
  423.   end;
  424.   TCharFormatW = record
  425.     cbSize: UINT;
  426.     dwMask: Longint;
  427.     dwEffects: Longint;
  428.     yHeight: Longint;
  429.     yOffset: Longint;
  430.     crTextColor: TColorRef;
  431.     bCharSet: Byte;
  432.     bPitchAndFamily: Byte;
  433.     szFaceName: array[0..LF_FACESIZE - 1] of WideChar;
  434.   end;
  435.   TCharFormat = TCharFormatA;
  436.  
  437. { CHARFORMAT masks }
  438.  
  439. const
  440.   {$EXTERNALSYM CFM_BOLD}
  441.   CFM_BOLD            = $00000001; 
  442.   {$EXTERNALSYM CFM_ITALIC}
  443.   CFM_ITALIC          = $00000002; 
  444.   {$EXTERNALSYM CFM_UNDERLINE}
  445.   CFM_UNDERLINE       = $00000004; 
  446.   {$EXTERNALSYM CFM_STRIKEOUT}
  447.   CFM_STRIKEOUT       = $00000008; 
  448.   {$EXTERNALSYM CFM_PROTECTED}
  449.   CFM_PROTECTED       = $00000010; 
  450.   {$EXTERNALSYM CFM_LINK}
  451.   CFM_LINK            = $00000020;              { Exchange hyperlink extension }
  452.   {$EXTERNALSYM CFM_SIZE}
  453.   CFM_SIZE            = $80000000; 
  454.   {$EXTERNALSYM CFM_COLOR}
  455.   CFM_COLOR           = $40000000; 
  456.   {$EXTERNALSYM CFM_FACE}
  457.   CFM_FACE            = $20000000; 
  458.   {$EXTERNALSYM CFM_OFFSET}
  459.   CFM_OFFSET          = $10000000; 
  460.   {$EXTERNALSYM CFM_CHARSET}
  461.   CFM_CHARSET         = $08000000; 
  462.  
  463. { CHARFORMAT effects }
  464.  
  465.   {$EXTERNALSYM CFE_BOLD}
  466.   CFE_BOLD            = $0001; 
  467.   {$EXTERNALSYM CFE_ITALIC}
  468.   CFE_ITALIC          = $0002; 
  469.   {$EXTERNALSYM CFE_UNDERLINE}
  470.   CFE_UNDERLINE       = $0004; 
  471.   {$EXTERNALSYM CFE_STRIKEOUT}
  472.   CFE_STRIKEOUT       = $0008; 
  473.   {$EXTERNALSYM CFE_PROTECTED}
  474.   CFE_PROTECTED       = $0010; 
  475.   {$EXTERNALSYM CFE_LINK}
  476.   CFE_LINK            = $0020; 
  477.   {$EXTERNALSYM CFE_AUTOCOLOR}
  478.   CFE_AUTOCOLOR       = $40000000;  { NOTE: this corresponds to CFM_COLOR, }
  479.                                     { which controls it }
  480.   {$EXTERNALSYM yHeightCharPtsMost}
  481.   yHeightCharPtsMost  = 1638; 
  482.  
  483. { EM_SETCHARFORMAT wParam masks }
  484.  
  485.   {$EXTERNALSYM SCF_SELECTION}
  486.   SCF_SELECTION       = $0001; 
  487.   {$EXTERNALSYM SCF_WORD}
  488.   SCF_WORD            = $0002; 
  489.   {$EXTERNALSYM SCF_DEFAULT}
  490.   SCF_DEFAULT         = $0000;          { set the default charformat or paraformat }
  491.   {$EXTERNALSYM SCF_ALL}
  492.   SCF_ALL             = $0004;          { not valid with SCF_SELECTION or SCF_WORD }
  493.   {$EXTERNALSYM SCF_USEUIRULES}
  494.   SCF_USEUIRULES      = $0008;          { modifier for SCF_SELECTION; says that }
  495.                                         { the format came from a toolbar, etc. and }
  496.                                         { therefore UI formatting rules should be }
  497.                                         { used instead of strictly formatting the }
  498.                                         { selection. }
  499.  
  500. type
  501.   {$EXTERNALSYM _charrange}
  502.   _charrange = record
  503.     cpMin: Longint;
  504.     cpMax: LongInt;
  505.   end;
  506.   TCharRange = _charrange;
  507.   {$EXTERNALSYM CHARRANGE}
  508.   CHARRANGE = _charrange;
  509.  
  510.   TTextRangeA = record
  511.     chrg: TCharRange;
  512.     lpstrText: PAnsiChar;
  513.   end;
  514.   TTextRangeW = record
  515.     chrg: TCharRange;
  516.     lpstrText: PWideChar;
  517.   end;
  518.   TTextRange = TTextRangeA;
  519.  
  520. type
  521.   TEditStreamCallBack = function (dwCookie: Longint; pbBuff: PByte; 
  522.     cb: Longint; var pcb: Longint): Longint; stdcall;
  523.     
  524.   {$EXTERNALSYM _editstream}
  525.   _editstream = record
  526.     dwCookie: Longint;
  527.     dwError: Longint;
  528.     pfnCallback: TEditStreamCallBack;
  529.   end;
  530.   TEditStream = _editstream;
  531.   {$EXTERNALSYM EDITSTREAM}
  532.   EDITSTREAM = _editstream;
  533.  
  534. { stream formats }
  535.  
  536. const
  537.   {$EXTERNALSYM SF_TEXT}
  538.   SF_TEXT             = $0001; 
  539.   {$EXTERNALSYM SF_RTF}
  540.   SF_RTF              = $0002; 
  541.   {$EXTERNALSYM SF_RTFNOOBJS}
  542.   SF_RTFNOOBJS        = $0003;          { outbound only }
  543.   {$EXTERNALSYM SF_TEXTIZED}
  544.   SF_TEXTIZED         = $0004;          { outbound only }
  545.   {$EXTERNALSYM SF_UNICODE}
  546.   SF_UNICODE          = $0010;          { Unicode file of some kind }
  547.  
  548. { Flag telling stream operations to operate on the selection only }
  549. { EM_STREAMIN will replace the current selection }
  550. { EM_STREAMOUT will stream out the current selection }
  551.  
  552.   {$EXTERNALSYM SFF_SELECTION}
  553.   SFF_SELECTION       = $8000; 
  554.  
  555. { Flag telling stream operations to operate on the common RTF keyword only }
  556. { EM_STREAMIN will accept the only common RTF keyword }
  557. { EM_STREAMOUT will stream out the only common RTF keyword }
  558.  
  559.   {$EXTERNALSYM SFF_PLAINRTF}
  560.   SFF_PLAINRTF        = $4000; 
  561.  
  562. { EM_FINDTEXT flags (removed in 3.0 SDK - leave in!) }
  563.  
  564.   FT_MATCHCASE = 4;
  565.   FT_WHOLEWORD = 2;
  566.  
  567. type
  568.   TFindTextA = record
  569.     chrg: TCharRange;
  570.     lpstrText: PAnsiChar;
  571.   end;
  572. {#END}  
  573.  
  574. {#BEGIN}
  575.   TFindTextExA = record
  576.     chrg: TCharRange;
  577.     lpstrText: PAnsiChar;
  578.     chrgText: TCharRange;
  579.   end;
  580.   TFindTextW = record
  581.     chrg: TCharRange;
  582.     lpstrText: PWideChar;
  583.   end;
  584. {#END}  
  585.  
  586. {#BEGIN}
  587.   TFindTextExW = record
  588.     chrg: TCharRange;
  589.     lpstrText: PWideChar;
  590.     chrgText: TCharRange;
  591.   end;
  592.   TFindText = TFindTextA;
  593.  
  594.   {$EXTERNALSYM _formatrange}
  595.   _formatrange = record
  596.     hdc: HDC;
  597.     hdcTarget: HDC;
  598.     rc: TRect;
  599.     rcPage: TRect;
  600.     chrg: TCharRange;
  601.   end;
  602.   TFormatRange = _formatrange;
  603.   {$EXTERNALSYM FORMATRANGE}
  604.   FORMATRANGE = _formatrange;
  605.  
  606. { all paragraph measurements are in twips }
  607.  
  608. const
  609.   {$EXTERNALSYM MAX_TAB_STOPS}
  610.   MAX_TAB_STOPS     = 32; 
  611.   {$EXTERNALSYM lDefaultTab}
  612.   lDefaultTab     = 720; 
  613.  
  614. type
  615.   {$EXTERNALSYM _paraformat}
  616.   _paraformat = record
  617.     cbSize: UINT;
  618.     dwMask: DWORD;
  619.     wNumbering: Word;
  620.     wReserved: Word;
  621.     dxStartIndent: Longint;
  622.     dxRightIndent: Longint;
  623.     dxOffset: Longint;
  624.     wAlignment: Word;
  625.     cTabCount: Smallint;
  626.     rgxTabs: array [0..MAX_TAB_STOPS - 1] of Longint;
  627.   end;
  628.   TParaFormat = _paraformat;
  629.   {$EXTERNALSYM PARAFORMAT}
  630.   PARAFORMAT = _paraformat;
  631.  
  632. { PARAFORMAT mask values }
  633.  
  634. const
  635.   {$EXTERNALSYM PFM_STARTINDENT}
  636.   PFM_STARTINDENT                     = $00000001; 
  637.   {$EXTERNALSYM PFM_RIGHTINDENT}
  638.   PFM_RIGHTINDENT                     = $00000002; 
  639.   {$EXTERNALSYM PFM_OFFSET}
  640.   PFM_OFFSET                          = $00000004; 
  641.   {$EXTERNALSYM PFM_ALIGNMENT}
  642.   PFM_ALIGNMENT                       = $00000008; 
  643.   {$EXTERNALSYM PFM_TABSTOPS}
  644.   PFM_TABSTOPS                        = $00000010; 
  645.   {$EXTERNALSYM PFM_NUMBERING}
  646.   PFM_NUMBERING                       = $00000020; 
  647.   {$EXTERNALSYM PFM_OFFSETINDENT}
  648.   PFM_OFFSETINDENT                    = $80000000; 
  649.  
  650. { PARAFORMAT numbering options }
  651.  
  652.   {$EXTERNALSYM PFN_BULLET}
  653.   PFN_BULLET                  = $0001; 
  654.  
  655. { PARAFORMAT alignment options }
  656.  
  657.   {$EXTERNALSYM PFA_LEFT}
  658.   PFA_LEFT            = $0001; 
  659.   {$EXTERNALSYM PFA_RIGHT}
  660.   PFA_RIGHT           = $0002; 
  661.   {$EXTERNALSYM PFA_CENTER}
  662.   PFA_CENTER          = $0003; 
  663.  
  664. type  
  665.   TCharFormat2A = record
  666.     cbSize: UINT;
  667.     dwMask: DWORD;
  668.     dwEffects: DWORD;
  669.     yHeight: Longint;
  670.     yOffset: Longint;
  671.     crTextColor: TColorRef;
  672.     bCharSet: Byte;
  673.     bPitchAndFamily: Byte;
  674.     szFaceName: array[0..LF_FACESIZE - 1] of AnsiChar;
  675.     wWeight: Word;                   { Font weight (LOGFONT value)         }
  676.     sSpacing: Smallint;              { Amount to space between letters     }
  677.     crBackColor: TColorRef;          { Background color                     }
  678.     lid: LCID;                       { Locale ID                         }
  679.     dwReserved: DWORD;               { Reserved. Must be 0                 }
  680.     sStyle: Smallint;                { Style handle                         }
  681.     wKerning: Word;                  { Twip size above which to kern char pair }
  682.     bUnderlineType: Byte;            { Underline type                     }
  683.     bAnimation: Byte;                { Animated text like marching ants     }
  684.     bRevAuthor: Byte;                { Revision author index             }
  685.     bReserved1: Byte;
  686.   end;
  687.   TCharFormat2W = record
  688.     cbSize: UINT;
  689.     dwMask: DWORD;
  690.     dwEffects: DWORD;
  691.     yHeight: Longint;
  692.     yOffset: Longint;
  693.     crTextColor: TColorRef;
  694.     bCharSet: Byte;
  695.     bPitchAndFamily: Byte;
  696.     szFaceName: array[0..LF_FACESIZE - 1] of WideChar;
  697.     wWeight: Word;                   { Font weight (LOGFONT value)         }
  698.     sSpacing: Smallint;              { Amount to space between letters     }
  699.     crBackColor: TColorRef;          { Background color                     }
  700.     lid: LCID;                       { Locale ID                         }
  701.     dwReserved: DWORD;               { Reserved. Must be 0                 }
  702.     sStyle: Smallint;                { Style handle                         }
  703.     wKerning: Word;                  { Twip size above which to kern char pair }
  704.     bUnderlineType: Byte;            { Underline type                     }
  705.     bAnimation: Byte;                { Animated text like marching ants     }
  706.     bRevAuthor: Byte;                { Revision author index             }
  707.     bReserved1: Byte;
  708.   end;
  709.   TCharFormat2 = TCharFormat2A;
  710.  
  711. { CHARFORMAT and PARAFORMAT "ALL" masks
  712.   CFM_COLOR mirrors CFE_AUTOCOLOR, a little hack to easily deal with autocolor }
  713. const
  714.   {$EXTERNALSYM CFM_EFFECTS}
  715.   CFM_EFFECTS = CFM_BOLD or CFM_ITALIC or CFM_UNDERLINE or CFM_COLOR or 
  716.     CFM_STRIKEOUT or CFE_PROTECTED or CFM_LINK; 
  717.   {$EXTERNALSYM CFM_ALL}
  718.   CFM_ALL = CFM_EFFECTS or CFM_SIZE or CFM_FACE or CFM_OFFSET or CFM_CHARSET; 
  719.   {$EXTERNALSYM PFM_ALL}
  720.   PFM_ALL = PFM_STARTINDENT or PFM_RIGHTINDENT or PFM_OFFSET or  
  721.     PFM_ALIGNMENT or PFM_TABSTOPS or PFM_NUMBERING or PFM_OFFSETINDENT; 
  722.  
  723. { New masks and effects -- a parenthesized asterisk indicates that
  724.    the data is stored by RichEdit2.0, but not displayed }
  725.  
  726.   {$EXTERNALSYM CFM_SMALLCAPS}
  727.   CFM_SMALLCAPS               = $0040;                  { (*)     }
  728.   {$EXTERNALSYM CFM_ALLCAPS}
  729.   CFM_ALLCAPS                 = $0080;                  { (*)     }
  730.   {$EXTERNALSYM CFM_HIDDEN}
  731.   CFM_HIDDEN                  = $0100;                  { (*)     }
  732.   {$EXTERNALSYM CFM_OUTLINE}
  733.   CFM_OUTLINE                 = $0200;                  { (*)     }
  734.   {$EXTERNALSYM CFM_SHADOW}
  735.   CFM_SHADOW                  = $0400;                  { (*)     }
  736.   {$EXTERNALSYM CFM_EMBOSS}
  737.   CFM_EMBOSS                  = $0800;                  { (*)     }
  738.   {$EXTERNALSYM CFM_IMPRINT}
  739.   CFM_IMPRINT                 = $1000;                  { (*)     }
  740.   {$EXTERNALSYM CFM_DISABLED}
  741.   CFM_DISABLED                = $2000; 
  742.   {$EXTERNALSYM CFM_REVISED}
  743.   CFM_REVISED                 = $4000; 
  744.  
  745.   {$EXTERNALSYM CFM_BACKCOLOR}
  746.   CFM_BACKCOLOR               = $04000000; 
  747.   {$EXTERNALSYM CFM_LCID}
  748.   CFM_LCID                    = $02000000; 
  749.   {$EXTERNALSYM CFM_UNDERLINETYPE}
  750.   CFM_UNDERLINETYPE           = $00800000;              { (*)     }
  751.   {$EXTERNALSYM CFM_WEIGHT}
  752.   CFM_WEIGHT                  = $00400000; 
  753.   {$EXTERNALSYM CFM_SPACING}
  754.   CFM_SPACING                 = $00200000;              { (*)     }
  755.   {$EXTERNALSYM CFM_KERNING}
  756.   CFM_KERNING                 = $00100000;              { (*)     }
  757.   {$EXTERNALSYM CFM_STYLE}
  758.   CFM_STYLE                   = $00080000;              { (*)     }
  759.   {$EXTERNALSYM CFM_ANIMATION}
  760.   CFM_ANIMATION               = $00040000;              { (*)     }
  761.   {$EXTERNALSYM CFM_REVAUTHOR}
  762.   CFM_REVAUTHOR               = $00008000; 
  763.  
  764.   {$EXTERNALSYM CFE_SUBSCRIPT}
  765.   CFE_SUBSCRIPT               = $00010000;              { Superscript and subscript are }
  766.   {$EXTERNALSYM CFE_SUPERSCRIPT}
  767.   CFE_SUPERSCRIPT             = $00020000;              {  mutually exclusive             }
  768.  
  769.   {$EXTERNALSYM CFM_SUBSCRIPT}
  770.   CFM_SUBSCRIPT               = CFE_SUBSCRIPT or CFE_SUPERSCRIPT; 
  771.   {$EXTERNALSYM CFM_SUPERSCRIPT}
  772.   CFM_SUPERSCRIPT             = CFM_SUBSCRIPT; 
  773.  
  774.   {$EXTERNALSYM CFM_EFFECTS2}
  775.   CFM_EFFECTS2 = CFM_EFFECTS or CFM_DISABLED or CFM_SMALLCAPS or CFM_ALLCAPS or 
  776.     CFM_HIDDEN  or CFM_OUTLINE or CFM_SHADOW or CFM_EMBOSS or 
  777.     CFM_IMPRINT or CFM_DISABLED or CFM_REVISED or 
  778.     CFM_SUBSCRIPT or CFM_SUPERSCRIPT or CFM_BACKCOLOR; 
  779.  
  780.   {$EXTERNALSYM CFM_ALL2}
  781.   CFM_ALL2 = CFM_ALL or CFM_EFFECTS2 or CFM_BACKCOLOR or CFM_LCID or 
  782.     CFM_UNDERLINETYPE or CFM_WEIGHT or CFM_REVAUTHOR or 
  783.     CFM_SPACING or CFM_KERNING or CFM_STYLE or CFM_ANIMATION; 
  784.  
  785.   {$EXTERNALSYM CFE_SMALLCAPS}
  786.   CFE_SMALLCAPS               = CFM_SMALLCAPS; 
  787.   {$EXTERNALSYM CFE_ALLCAPS}
  788.   CFE_ALLCAPS                 = CFM_ALLCAPS; 
  789.   {$EXTERNALSYM CFE_HIDDEN}
  790.   CFE_HIDDEN                  = CFM_HIDDEN; 
  791.   {$EXTERNALSYM CFE_OUTLINE}
  792.   CFE_OUTLINE                 = CFM_OUTLINE; 
  793.   {$EXTERNALSYM CFE_SHADOW}
  794.   CFE_SHADOW                  = CFM_SHADOW; 
  795.   {$EXTERNALSYM CFE_EMBOSS}
  796.   CFE_EMBOSS                  = CFM_EMBOSS; 
  797.   {$EXTERNALSYM CFE_IMPRINT}
  798.   CFE_IMPRINT                 = CFM_IMPRINT; 
  799.   {$EXTERNALSYM CFE_DISABLED}
  800.   CFE_DISABLED                = CFM_DISABLED; 
  801.   {$EXTERNALSYM CFE_REVISED}
  802.   CFE_REVISED                 = CFM_REVISED; 
  803.  
  804. { NOTE: CFE_AUTOCOLOR and CFE_AUTOBACKCOLOR correspond to CFM_COLOR and
  805.    CFM_BACKCOLOR, respectively, which control them }
  806.    
  807.   {$EXTERNALSYM CFE_AUTOBACKCOLOR}
  808.   CFE_AUTOBACKCOLOR           = CFM_BACKCOLOR; 
  809.  
  810. { Underline types }
  811.  
  812.   {$EXTERNALSYM CFU_CF1UNDERLINE}
  813.   CFU_CF1UNDERLINE            = $FF;    { map charformat's bit underline to CF2. }
  814.   {$EXTERNALSYM CFU_INVERT}
  815.   CFU_INVERT                  = $FE;    { For IME composition fake a selection. }
  816.   {$EXTERNALSYM CFU_UNDERLINEDOTTED}
  817.   CFU_UNDERLINEDOTTED         = $4;             { (*) displayed as ordinary underline     }
  818.   {$EXTERNALSYM CFU_UNDERLINEDOUBLE}
  819.   CFU_UNDERLINEDOUBLE         = $3;             { (*) displayed as ordinary underline     }
  820.   {$EXTERNALSYM CFU_UNDERLINEWORD}
  821.   CFU_UNDERLINEWORD           = $2;             { (*) displayed as ordinary underline     }
  822.   {$EXTERNALSYM CFU_UNDERLINE}
  823.   CFU_UNDERLINE               = $1; 
  824.   {$EXTERNALSYM CFU_UNDERLINENONE}
  825.   CFU_UNDERLINENONE           = 0; 
  826.  
  827. type  
  828.   TParaFormat2 = record
  829.     cbSize: UINT;
  830.     dwMask: DWORD;
  831.     wNumbering: Word;
  832.     wReserved: Word;
  833.     dxStartIndent: Longint;
  834.     dxRightIndent: Longint;
  835.     dxOffset: Longint;
  836.     wAlignment: Word;
  837.     cTabCount: Smallint;
  838.     rgxTabs: array [0..MAX_TAB_STOPS - 1] of Longint;
  839.     dySpaceBefore: Longint;     { Vertical spacing before para             }
  840.     dySpaceAfter: Longint;      { Vertical spacing after para             }
  841.     dyLineSpacing: Longint;     { Line spacing depending on Rule         }
  842.     sStyle: Smallint;           { Style handle                             }
  843.     bLineSpacingRule: Byte;     { Rule for line spacing (see tom.doc)     }
  844.     bCRC: Byte;                 { Reserved for CRC for rapid searching     }
  845.     wShadingWeight: Word;       { Shading in hundredths of a per cent     }
  846.     wShadingStyle: Word;        { Nibble 0: style, 1: cfpat, 2: cbpat     }
  847.     wNumberingStart: Word;      { Starting value for numbering             }
  848.     wNumberingStyle: Word;      { Alignment, roman/arabic, (), ), ., etc. }
  849.     wNumberingTab: Word;        { Space bet 1st indent and 1st-line text }
  850.     wBorderSpace: Word;         { Space between border and text (twips) }
  851.     wBorderWidth: Word;         { Border pen width (twips)                 }
  852.     wBorders: Word;             { Byte 0: bits specify which borders     }
  853.                                 { Nibble 2: border style, 3: color index }
  854.   end;
  855.  
  856. { PARAFORMAT 2.0 masks and effects }
  857. const
  858.   {$EXTERNALSYM PFM_SPACEBEFORE}
  859.   PFM_SPACEBEFORE                     = $00000040; 
  860.   {$EXTERNALSYM PFM_SPACEAFTER}
  861.   PFM_SPACEAFTER                      = $00000080; 
  862.   {$EXTERNALSYM PFM_LINESPACING}
  863.   PFM_LINESPACING                     = $00000100; 
  864.   {$EXTERNALSYM PFM_STYLE}
  865.   PFM_STYLE                           = $00000400; 
  866.   {$EXTERNALSYM PFM_BORDER}
  867.   PFM_BORDER                          = $00000800;      { (*)     }
  868.   {$EXTERNALSYM PFM_SHADING}
  869.   PFM_SHADING                         = $00001000;      { (*)     }
  870.   {$EXTERNALSYM PFM_NUMBERINGSTYLE}
  871.   PFM_NUMBERINGSTYLE                  = $00002000;      { (*)     }
  872.   {$EXTERNALSYM PFM_NUMBERINGTAB}
  873.   PFM_NUMBERINGTAB                    = $00004000;      { (*)     }
  874.   {$EXTERNALSYM PFM_NUMBERINGSTART}
  875.   PFM_NUMBERINGSTART                  = $00008000;      { (*)     }
  876.  
  877.   {$EXTERNALSYM PFM_RTLPARA}
  878.   PFM_RTLPARA                         = $00010000; 
  879.   {$EXTERNALSYM PFM_KEEP}
  880.   PFM_KEEP                            = $00020000;      { (*)     }
  881.   {$EXTERNALSYM PFM_KEEPNEXT}
  882.   PFM_KEEPNEXT                        = $00040000;      { (*)     }
  883.   {$EXTERNALSYM PFM_PAGEBREAKBEFORE}
  884.   PFM_PAGEBREAKBEFORE                 = $00080000;      { (*)     }
  885.   {$EXTERNALSYM PFM_NOLINENUMBER}
  886.   PFM_NOLINENUMBER                    = $00100000;      { (*)     }
  887.   {$EXTERNALSYM PFM_NOWIDOWCONTROL}
  888.   PFM_NOWIDOWCONTROL                  = $00200000;      { (*)     }
  889.   {$EXTERNALSYM PFM_DONOTHYPHEN}
  890.   PFM_DONOTHYPHEN                     = $00400000;      { (*)     }
  891.   {$EXTERNALSYM PFM_SIDEBYSIDE}
  892.   PFM_SIDEBYSIDE                      = $00800000;      { (*)     }
  893.  
  894.   {$EXTERNALSYM PFM_TABLE}
  895.   PFM_TABLE                           = $c0000000;      { (*)     }
  896.  
  897. { Note: PARAFORMAT has no effects }
  898.  
  899.   {$EXTERNALSYM PFM_EFFECTS}
  900.   PFM_EFFECTS = PFM_RTLPARA or PFM_KEEP or PFM_KEEPNEXT or PFM_TABLE or 
  901.     PFM_PAGEBREAKBEFORE or PFM_NOLINENUMBER or 
  902.     PFM_NOWIDOWCONTROL or PFM_DONOTHYPHEN or PFM_SIDEBYSIDE or PFM_TABLE; 
  903.  
  904.   {$EXTERNALSYM PFM_ALL2}
  905.   PFM_ALL2 = PFM_ALL or PFM_EFFECTS or PFM_SPACEBEFORE or PFM_SPACEAFTER or 
  906.     PFM_LINESPACING or PFM_STYLE or PFM_SHADING or PFM_BORDER or 
  907.     PFM_NUMBERINGTAB or PFM_NUMBERINGSTART or PFM_NUMBERINGSTYLE; 
  908.  
  909.   {$EXTERNALSYM PFE_RTLPARA}
  910.   PFE_RTLPARA                         = PFM_RTLPARA         shr 16; 
  911.   {$EXTERNALSYM PFE_KEEP}
  912.   PFE_KEEP                            = PFM_KEEP             shr 16;                     { (*)     }
  913.   {$EXTERNALSYM PFE_KEEPNEXT}
  914.   PFE_KEEPNEXT                        = PFM_KEEPNEXT         shr 16;          { (*)     }
  915.   {$EXTERNALSYM PFE_PAGEBREAKBEFORE}
  916.   PFE_PAGEBREAKBEFORE                 = PFM_PAGEBREAKBEFORE shr 16;     { (*)     }
  917.   {$EXTERNALSYM PFE_NOLINENUMBER}
  918.   PFE_NOLINENUMBER                    = PFM_NOLINENUMBER     shr 16;       { (*)     }
  919.   {$EXTERNALSYM PFE_NOWIDOWCONTROL}
  920.   PFE_NOWIDOWCONTROL                  = PFM_NOWIDOWCONTROL     shr 16;     { (*)     }
  921.   {$EXTERNALSYM PFE_DONOTHYPHEN}
  922.   PFE_DONOTHYPHEN                     = PFM_DONOTHYPHEN      shr 16;       { (*)     }
  923.   {$EXTERNALSYM PFE_SIDEBYSIDE}
  924.   PFE_SIDEBYSIDE                      = PFM_SIDEBYSIDE         shr 16;        { (*)     }
  925.  
  926.   {$EXTERNALSYM PFE_TABLEROW}
  927.   PFE_TABLEROW                        = $c000;          { These 3 options are mutually     }
  928.   {$EXTERNALSYM PFE_TABLECELLEND}
  929.   PFE_TABLECELLEND                    = $8000;          {  exclusive and each imply     }
  930.   {$EXTERNALSYM PFE_TABLECELL}
  931.   PFE_TABLECELL                       = $4000;          {  that para is part of a table }
  932.  
  933.  *    PARAFORMAT numbering options (values for wNumbering):
  934.  *
  935.  *        Numbering Type        Value    Meaning
  936.  *        tomNoNumbering             0        Turn off paragraph numbering
  937.  *        tomNumberAsLCLetter      1        a, b, c, ...
  938.  *        tomNumberAsUCLetter      2        A, B, C, ...
  939.  *        tomNumberAsLCRoman      3        i, ii, iii, ...
  940.  *        tomNumberAsUCRoman      4        I, II, III, ...
  941.  *        tomNumberAsSymbols      5        default is bullet
  942.  *        tomNumberAsNumber         6        0, 1, 2, ...
  943.  *        tomNumberAsSequence      7        tomNumberingStart is first Unicode to use
  944.  *
  945.  *    Other valid Unicode chars are Unicodes for bullets.
  946. }
  947.  
  948.   {$EXTERNALSYM PFA_JUSTIFY}
  949.   PFA_JUSTIFY                         = 4;      { New paragraph-alignment option 2.0 (*) }
  950.  
  951. { notification structures }
  952. type
  953.   PMsgFilter = ^TMsgFilter;
  954.   {$EXTERNALSYM _msgfilter}
  955.   _msgfilter = record
  956.     nmhdr: TNMHdr;
  957.     msg: UINT;
  958.     wParam: WPARAM;
  959.     lParam: LPARAM;
  960.   end;
  961.   TMsgFilter = _msgfilter;
  962.   {$EXTERNALSYM MSGFILTER}
  963.   MSGFILTER = _msgfilter;
  964.  
  965.   PReqSize = ^TReqSize;
  966.   TReqSize = record
  967.     nmhdr: TNMHdr;
  968.     rc: TRect;
  969.   end;
  970.  
  971.   PSelChange = ^TSelChange;
  972.   {$EXTERNALSYM _selchange}
  973.   _selchange = record
  974.     nmhdr: TNMHdr;
  975.     chrg: TCharRange;
  976.     seltyp: Word;
  977.   end;
  978.   TSelChange = _selchange;
  979.   {$EXTERNALSYM SELCHANGE}
  980.   SELCHANGE = _selchange;
  981.  
  982. const
  983.   {$EXTERNALSYM SEL_EMPTY}
  984.   SEL_EMPTY           = $0000; 
  985.   {$EXTERNALSYM SEL_TEXT}
  986.   SEL_TEXT            = $0001; 
  987.   {$EXTERNALSYM SEL_OBJECT}
  988.   SEL_OBJECT          = $0002; 
  989.   {$EXTERNALSYM SEL_MULTICHAR}
  990.   SEL_MULTICHAR       = $0004; 
  991.   {$EXTERNALSYM SEL_MULTIOBJECT}
  992.   SEL_MULTIOBJECT     = $0008; 
  993.  
  994. { used with IRichEditOleCallback::GetContextMenu, this flag will be
  995.    passed as a "selection type".  It indicates that a context menu for
  996.    a right-mouse drag drop should be generated.  The IOleObject parameter
  997.    will really be the IDataObject for the drop
  998. }
  999.   {$EXTERNALSYM GCM_RIGHTMOUSEDROP}
  1000.   GCM_RIGHTMOUSEDROP      = $8000; 
  1001.  
  1002. type
  1003.   TEndDropFiles = record
  1004.     nmhdr: TNMHdr;
  1005.     hDrop: THandle;
  1006.     cp: Longint;
  1007.     fProtected: Bool;
  1008.   end;
  1009.  
  1010.   PENProtected = ^TENProtected;
  1011.   {$EXTERNALSYM _enprotected}
  1012.   _enprotected = record
  1013.     nmhdr: TNMHdr;
  1014.     msg: UINT;
  1015.     wParam: WPARAM;
  1016.     lParam: LPARAM;
  1017.     chrg: TCharRange;
  1018.   end;
  1019.   TENProtected = _enprotected;
  1020.   {$EXTERNALSYM ENPROTECTED}
  1021.   ENPROTECTED = _enprotected;
  1022.  
  1023.   PENSaveClipboard = ^TENSaveClipboard;
  1024.   {$EXTERNALSYM _ensaveclipboard}
  1025.   _ensaveclipboard = record
  1026.     nmhdr: TNMHdr;
  1027.     cObjectCount: Longint;
  1028.     cch: Longint;
  1029.   end;
  1030.   TENSaveClipboard = _ensaveclipboard;
  1031.   {$EXTERNALSYM ENSAVECLIPBOARD}
  1032.   ENSAVECLIPBOARD = _ensaveclipboard;
  1033.  
  1034.   TENOleOpFailed = packed record 
  1035.     nmhdr: TNMHdr;
  1036.     iob: Longint;
  1037.     lOper: Longint;
  1038.     hr: HRESULT;
  1039.   end;
  1040.  
  1041. const
  1042.   {$EXTERNALSYM OLEOP_DOVERB}
  1043.   OLEOP_DOVERB        = 1; 
  1044.  
  1045. type
  1046.   TObjectPositions = packed record 
  1047.     nmhdr: TNMHdr;
  1048.     cObjectCount: Longint;
  1049.     pcpPositions: PLongint;
  1050.   end;
  1051.  
  1052.   TENLink = record 
  1053.     nmhdr: TNMHdr;
  1054.     msg: UINT;
  1055.     wParam: WPARAM;
  1056.     lParam: LPARAM;
  1057.     chrg: TCharRange;
  1058.   end;
  1059.  
  1060. { PenWin specific }
  1061.   {$EXTERNALSYM _encorrecttext}
  1062.   _encorrecttext = record
  1063.     nmhdr: TNMHdr;
  1064.     chrg: TCharRange;
  1065.     seltyp: Word;
  1066.   end;
  1067.   TENCorrectText = _encorrecttext;
  1068.   {$EXTERNALSYM ENCORRECTTEXT}
  1069.   ENCORRECTTEXT = _encorrecttext;
  1070.  
  1071. { Far East specific }
  1072.   {$EXTERNALSYM _punctuation}
  1073.   _punctuation = record
  1074.     iSize: UINT;
  1075.     szPunctuation: PChar;
  1076.   end;
  1077.   TPunctuation = _punctuation;
  1078.   {$EXTERNALSYM PUNCTUATION}
  1079.   PUNCTUATION = _punctuation;
  1080.  
  1081. { Far East specific }
  1082.   {$EXTERNALSYM _compcolor}
  1083.   _compcolor = record
  1084.     crText: TColorRef;
  1085.     crBackground: TColorRef;
  1086.     dwEffects: Longint;
  1087.   end;
  1088.   TCompColor = _compcolor;
  1089.   {$EXTERNALSYM COMPCOLOR}
  1090.   COMPCOLOR = _compcolor;
  1091.  
  1092. { clipboard formats - use as parameter to RegisterClipboardFormat }
  1093.  
  1094. const
  1095.   {$EXTERNALSYM CF_RTF}
  1096.   CF_RTF                 = 'Rich Text Format';
  1097.   {$EXTERNALSYM CF_RTFNOOBJS}
  1098.   CF_RTFNOOBJS           = 'Rich Text Format Without Objects'; 
  1099.   {$EXTERNALSYM CF_RETEXTOBJ}
  1100.   CF_RETEXTOBJ           = 'RichEdit Text and Objects';
  1101.  
  1102. type
  1103.   {$EXTERNALSYM _repastespecial}
  1104.   _repastespecial = record
  1105.     dwAspect: DWORD;
  1106.     dwParam: DWORD;
  1107.   end;
  1108.   TRepasteSpecial = _repastespecial;
  1109.   {$EXTERNALSYM REPASTESPECIAL}
  1110.   REPASTESPECIAL = _repastespecial;
  1111.  
  1112. {     UndoName info }
  1113.  
  1114.   UNDONAMEID = (UID_UNKNOWN, UID_TYPING, UID_DELETE, UID_DRAGDROP, UID_CUT,
  1115.     UID_PASTE);
  1116.  
  1117. { flags for the GETEXTEX data structure }
  1118.  
  1119. const
  1120.   {$EXTERNALSYM GT_DEFAULT}
  1121.   GT_DEFAULT                  = 0; 
  1122.   {$EXTERNALSYM GT_USECRLF}
  1123.   GT_USECRLF                  = 1; 
  1124.  
  1125. { EM_GETTEXTEX info; this struct is passed in the wparam of the message }
  1126.  
  1127. type
  1128.   TGetTextEx = record 
  1129.     cb: DWORD;                 { count of bytes in the string  }
  1130.     flags: DWORD;              { flags (see the GT_XXX defines }
  1131.     codepage: UINT;            { code page for translation (CP_ACP for default,
  1132.                                  1200 for Unicode                      }
  1133.     lpDefaultChar: LPCSTR;     { replacement for unmappable chars             }
  1134.     lpUsedDefChar: PBOOL;      { pointer to flag set when def char used     }
  1135.   end;
  1136.  
  1137. { flags for the GETTEXTLENGTHEX data structure }
  1138.  
  1139. const
  1140.   {$EXTERNALSYM GTL_DEFAULT}
  1141.   GTL_DEFAULT         = 0;      { do the default (return # of chars)         }
  1142.   {$EXTERNALSYM GTL_USECRLF}
  1143.   GTL_USECRLF         = 1;      { compute answer using CRLFs for paragraphs }
  1144.   {$EXTERNALSYM GTL_PRECISE}
  1145.   GTL_PRECISE         = 2;      { compute a precise answer                     }
  1146.   {$EXTERNALSYM GTL_CLOSE}
  1147.   GTL_CLOSE           = 4;      { fast computation of a "close" answer         }
  1148.   {$EXTERNALSYM GTL_NUMCHARS}
  1149.   GTL_NUMCHARS        = 8;      { return the number of characters             }
  1150.   {$EXTERNALSYM GTL_NUMBYTES}
  1151.   GTL_NUMBYTES        = 16;     { return the number of _bytes_                 }
  1152.  
  1153. { EM_GETTEXTLENGTHEX info; this struct is passed in the wparam of the msg }
  1154.  
  1155. type
  1156.   TGetTextLengthEx = record 
  1157.     flags: DWORD;              { flags (see GTL_XXX defines)                 }
  1158.     codepage: UINT;            { code page for translation (CP_ACP for default,
  1159.                                  1200 for Unicode                      }
  1160.   end;
  1161.  
  1162. { UNICODE embedding character }
  1163. const
  1164.   {$EXTERNALSYM WCH_EMBEDDING}
  1165.   WCH_EMBEDDING     = $FFFC; 
  1166.  
  1167. implementation
  1168.  
  1169. end.
  1170.